package main

import (
	"gitee.com/yazutang/go-oauth2/config"
	"gitee.com/yazutang/go-oauth2/home"
	"gitee.com/yazutang/go-oauth2/providers/gitee"
	"github.com/gin-contrib/sessions"
	"github.com/gin-contrib/sessions/cookie"
	"github.com/gin-gonic/gin"
)

// 授权服务器 本例：https://gitee.com
// 数据服务器 本例：https://gitee.com
// 资源拥有者
// 客户 - 代表资源所有者及其授权发出受保护资源请求的应用程序

// Gitee OAuth文档
// https://gitee.com/api/v5/oauth_doc#/list-item-2
// 注册gitee帐号 手动创建第三方应用

func setupRouter() *gin.Engine {

	router := gin.Default()
	// 路由不支持的HTTP方法应当返回405错误码
	router.HandleMethodNotAllowed = true

	// 使用session中间件
	store := cookie.NewStore([]byte(config.Conf.GetString("SECRET_KEY")))
	router.Use(sessions.Sessions("sessionid", store))

	router.LoadHTMLGlob("templates/*")

	router.GET("/", home.Index)
	auth := router.Group("/auth")
	{
		auth.GET("/login/", gitee.Login)
		auth.GET("/passport/", gitee.Passport) // 处理回调URL
		auth.GET("/profile/", gitee.Profile)
		auth.GET("/logout/", gitee.Logout)
	}

	return router
}

func main() {
	// 连接redis
	gitee.Init()
	router := setupRouter()

	router.Run(":" + config.Conf.GetString("SERVER.PORT"))
}
